############################### DISCLAIMER #################################
### Das verwenden dieses Templates basiert auf eigener Verantwortung.    ###
### Die ALSO Schweiz AG lehnt jede Haftung ab beim verwenden dieses      ###
### Templates                                                            ###
############################################################################  
# Dieses Template erstellt eine DoS Ausnahme Regel fr MS-Teams damit      #
# die Standart DoS Regel den UDP-FLOW nicht triggert und blockiert         #
# Im Template wird eine Adressegruppe mit den MS-Teams IPv4 Adressen       #
# erstellt und es wird eine Service Gruppe mit den MS-Teams Port definiert #
#                                                                          #
# Nach dem Einlesen des Skripts die neue DoS Regel vor die Standart DoS -  #
# Regel schieben.                                                          #
#                                                                          #
# Wenn neue IP Adressen bekannt werden, knnen diese in die Gruppe         #
# gr_ext-MS-TEAMS hinzugefgt werden.                                      #
# Wenn neue Services bekannt werden, knnen diese in die ServiceGruppe     #
# gr_MS-TEAMS hinzugefgt werden.                                          #
# Referenz: https://learn.microsoft.com/en-us/microsoft-365/enterprise/urls-and-ip-address-ranges?view=o365-worldwide#skype-for-business-online-and-microsoft-teams
############################################################################
# Version 1.0.0 - 10.07.2023                                               #
# Erstellt von 4Tinu                                                       #
############################################################################
#
# Folgende Variabeln mit der Funktion "suchen + ersetzen" den richtigen Werten zuweisen:
# 
# Es muss der gesamten Ausdruck einschlielich der eckigen Klammern ersetzt werden.
# +--------------------------+--------------------+---------------------------------------------------------------------------------+
# | Variabeln                |  Example value     |   Description                                                                   |
# +--------------------------+--------------------+---------------------------------------------------------------------------------+
# | [INTERFACE_NAME]         |   wan1             |    Interface auf welche die DoS Regel ziehen soll                               |
# +--------------------------+--------------------+---------------------------------------------------------------------------------+
# Achtung Interface Namen, Portnummern und Adressobjekte sind Case sensitiv
# Wenn alle Variablen mit search replace angepasst wurden, kann ab hier das Template auf die FortiGate eingelesen werden:

### Adressobjekte fuer MS-TEAMS definieren
config firewall address
    edit "ext-TEAMS-13.107.64.0-18" 
        set comment "MS-Teams IP Range" 
        set color 20
        set subnet 13.107.64.0 255.255.192.0
    next
    edit "ext-TEAMS-52.112.0.0-14" 
        set comment "MS-Teams IP Range" 
        set color 20
        set subnet 52.112.0.0 255.252.0.0
    next
    edit "ext-TEAMS-52.238.119.141-32" 
        set comment "MS-Teams IP" 
        set color 20
        set subnet 52.238.119.141 255.255.255.255
    next
    edit "ext-TEAMS-52.244.160.207-32" 
        set comment "MS-Teams IP" 
        set color 20
        set subnet 52.244.160.207 255.255.255.255
    next
    edit "ext-TEAMS-52.122.0.0-15" 
        set comment "MS-Teams IP Range" 
        set color 20
        set subnet 52.122.0.0 255.254.0.0
    next
end

### Adressgruppe definieren
config firewall addrgrp
    edit "gr_ext-MS-TEAMS"
        set member "ext-TEAMS-13.107.64.0-18" "ext-TEAMS-52.112.0.0-14" "ext-TEAMS-52.122.0.0-15" "ext-TEAMS-52.238.119.141-32" "ext-TEAMS-52.244.160.207-32"
        set comment "MS-Teams IP Adressen - Referenz: https://learn.microsoft.com/en-us/microsoft-365/enterprise/urls-and-ip-address-ranges?view=o365-worldwide#skype-for-business-online-and-microsoft-teams"
        set color 20
    next
end

### Spezifische TEAMS Services erstellen:

config firewall service custom
    edit "udp_3478-3481"
        set category "VoIP, Messaging & Other Applications"
        set comment "Teams Port: https://answers.microsoft.com/en-us/msteams/forum/all/ports-required-for-microsoft-teams/87c608b5-1650-4a84-a15a-9bd7846cb8bb"
        set color 20
        set udp-portrange 3478-3481:1024-65535
    next
end

### Gruppe fr Teams Services erstellen:

config firewall service group
    edit "gr_MS-TEAMS"
        set member "HTTP" "HTTPS" "udp_3478-3481"
        set comment "MS Teams Service Gruppe"
        set color 20
    next
end

### DoS Policy Konfigurieren
config firewall DoS-policy
    edit 0
        set name "Teams_[INTERFACE_NAME]"
        set comments "Teams Ausnahme"
        set interface "[INTERFACE_NAME]"
        set srcaddr "all"
        set dstaddr "gr_ext-MS-TEAMS"
        set service "gr_MS-TEAMS"
        config anomaly
            edit "tcp_syn_flood"
                set status enable
                set log enable
                set action block
                set threshold 2000
            next
            edit "tcp_port_scan"
                set status enable
                set log enable
                set action block
                set threshold 1000
            next
            edit "tcp_src_session"
                set status enable
                set log enable
                set action block
                set threshold 5000
            next
            edit "tcp_dst_session"
                set status enable
                set log enable
                set action block
                set threshold 5000
            next
            edit "udp_flood"
                set status enable
                set log enable
                set threshold 2000
            next
            edit "udp_scan"
                set status enable
                set log enable
                set action block
                set threshold 2000
            next
            edit "udp_src_session"
                set status enable
                set log enable
                set action block
                set threshold 5000
            next
            edit "udp_dst_session"
                set status enable
                set log enable
                set action block
                set threshold 5000
            next
            edit "icmp_flood"
                set status enable
                set log enable
                set action block
                set threshold 250
            next
            edit "icmp_sweep"
                set status enable
                set log enable
                set action block
                set threshold 100
            next
            edit "icmp_src_session"
                set status enable
                set log enable
                set action block
                set threshold 300
            next
            edit "icmp_dst_session"
                set status enable
                set log enable
                set action block
                set threshold 1000
            next
            edit "ip_src_session"
                set status enable
                set log enable
                set action block
                set threshold 5000
            next
            edit "ip_dst_session"
                set status enable
                set log enable
                set action block
                set threshold 5000
            next
            edit "sctp_flood"
                set status enable
                set log enable
                set action block
                set threshold 2000
            next
            edit "sctp_scan"
                set status enable
                set log enable
                set action block
                set threshold 1000
            next
            edit "sctp_src_session"
                set status enable
                set log enable
                set action block
                set threshold 5000
            next
            edit "sctp_dst_session"
                set status enable
                set log enable
                set action block
                set threshold 5000
            next
        end
    next
end
### DoS Policy vor die Standart DoS Regel schieben.

### Template Ende ###
